# 1、变量
age = 20
# 打印变量值和类型
# type 获取变量的类型
print(age, type(age))

# 动态类型的变成语言
age = "20"
print(age, type(age))

# 可以再定义变量是指定类型
# 增加类型之后还是可以修改变量类型
name: str = "张三"
print(name)

# 2、变量命令规则
# 变量名必须是大小写英文字母、数字或下划线 _ 的组合，不能用数字开头，并且对 大小写敏感
# 不能使用关键字命名
import keyword

# 打印python关键字
print(keyword.kwlist)

# 3、常量
# 再python中没有定义常量的关键字，一班使用大写命名定义常量
PI = 3.1415926
print(PI)

# 4、注释
# 单行注释
'''
如果注释里面有单引号外面使用双引号
如果注释里面有双引号外面用单引号
多行"注释"
'''

"""
多行'注释'
"""

# 5、print函数
print(1, 2, 3, 4, 5, 6)
# 指定分隔符打印
# sep="-" 调用函数时指定参数名
print(1, 2, 3, 4, 5, 6, sep="-")

# 6、数据类型
# 整型
num = 100
print(num + 100)

# 浮点数
# 科学计数法
pi = 3.14e10
print(pi)

# 字符串
words = "java,spark,hadoop,python"
print(words, type(words))

# 将字符串切分成列表
words_list = words.split(",")
print(words_list, type(words_list))

s = "\t大数据\t"
print(s)
# 去点字符串前后的空格和制表符
print(s.strip())
print(s.lstrip())
print(s.rstrip())

# 转换成大写
print(words.upper())
# 转换成小写
print(words.upper().lower())

# 获取长度
print(len(words))
print(len(words_list))

# 字符串拼接
s = "java" + "," + "hadoop"
print(s)

age = 20
name = "张三"
# 不同数据类型直接不能直接使用+进行拼接
# info = "age:" + age
# print(info)

# %d,%s占位符，
# ￥d代表数字，%s代表字符串
# (age, name)： 安装顺序进行赋值
info = "age:%d，name:%s" % (age, name)
print(info)

info = "age:{}，name:{}".format(age, name)
print(info)

info = f"age:{age}，name:{name}"
print(info)

# 布尔值
b1 = True
b2 = False
print(b1, type(b1))

# 逻辑运算
print(True and True)
print(True or True)
print(not True)

# 空值,类似java中的null
n = None
print(n, type(n))

# 算术运算符
a = 100
b = 3

print(a + b)
print(a - b)
print(a * b)
print(a / b)
print(a // b)  # 向下取整
print(a ** b)  # a的b次方
print(a % b)  # 取余

# 类型转换
age = "100"
print(age, type(age))

# 将字符串转换成int类型
# 倮数据和类型不匹配会出现类型转换异常
age_i = float(age)
print(age_i, type(age_i))

print(bool(age))  # True
print(bool("False"))  # True
print(bool(1))  # True

print(bool(0))  # False
print(bool(None))  # False

# 判断变量的类型
print(isinstance(age, str))


